/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.edu.utfpr.dao;

import br.com.caelum.vraptor.ioc.Component;
import br.edu.utfpr.bean.Cliente;
import br.edu.utfpr.bean.Poltrona;
import br.edu.utfpr.bean.Voo;
import com.sun.corba.se.impl.oa.poa.Policies;
//import com.sun.security.ntlm.Client;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.Query;

/**
 *
 * @author guardezi
 */
@Component
public class DaoPoltrona {
    private final EntityManager em;

    public DaoPoltrona(EntityManager em) {
        this.em = em;
    }
    
    public void gravar(Poltrona p){
        em.persist(p);
    }
    
    public void compraPoltrona(Long codCliente,Long codPoltrona){
        Cliente c = em.find(Cliente.class, codCliente);
        System.out.println("cliente:"+c.getCliNome());
        
        Poltrona p = em.find(Poltrona.class, codPoltrona);
        System.out.println("poltrona:"+p.getPolNumero());
        
        p.setTbClienteCliCpf(c);
        em.merge(p);
        System.out.println("OK");
        
    }
    
    
    public void confirmarchekin(Long codPoltrona){
        Poltrona p = em.find(Poltrona.class, codPoltrona);
        p.setPolStatus(Boolean.TRUE);
        em.merge(p);
    }
    
    public List listarPoltronas(Long codVoo){
        Query q = em.createQuery("select p from Poltrona p where p.tbVooVooCodigo.vooCodigo ="
                                +codVoo+"order by p.polNumero" );
        return q.getResultList();
    }
    
    public List listarPoltronasLivres(Long codVoo){
        Query q = em.createQuery("select p from Poltrona p where p.tbVooVooCodigo.vooCodigo ="+codVoo);
        List<Poltrona> lista = q.getResultList();
        List<Poltrona> listaLivre = new ArrayList<Poltrona>();
        for (Poltrona poltrona : lista) {
            if(poltrona.getTbClienteCliCpf() == null)
                listaLivre.add(poltrona);
        }
        return listaLivre;
    }
    
    public List listarPoltronasCompradas(Long codVoo){
        Query q = em.createQuery("select p from Poltrona p where p.tbVooVooCodigo.vooCodigo ="+codVoo);
        List<Poltrona> lista = q.getResultList();
        List<Poltrona> listaOcupada = new ArrayList<Poltrona>();
        for (Poltrona poltrona : lista) {
            if(poltrona.getTbClienteCliCpf() != null)
                listaOcupada.add(poltrona);
        }
        return listaOcupada;
    }

    public List listarPoltronasConfirmadas(Long codVoo){
        Query q = em.createQuery("select p from Poltrona p where p.tbVooVooCodigo.vooCodigo ="+codVoo);
        List<Poltrona> lista = q.getResultList();
        List<Poltrona> listaOcupada = new ArrayList<Poltrona>();
        for (Poltrona poltrona : lista) {
            if(poltrona.getPolStatus())
                listaOcupada.add(poltrona);
        }
        return listaOcupada;
    }

}

